package 树;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName 对称二叉树.java
 * @Description TODO
 * @createTime 2020年10月08日 20:02:00
 * 请实现一个函数，用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样，那么它是对称的。
 *
 * 例如，二叉树 [1,2,2,3,4,4,3] 是对称的。
 *
 *     1
 *    / \
 *   2   2
 *  / \ / \
 * 3  4 4  3
 * 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
 *
 *     1
 *    / \
 *   2   2
 *    \   \
 *    3    3
 *
 *
 * 总结：1.可以创造一个镜像二叉树
 *      2.return isSymmetric(root1.left, root2.right) && isSymmetric(root1.right,root2.left);
 *      这样可以实现每个对称节点的遍历
 */
public class 对称二叉树 {
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
   // class Solution {
//        public boolean isSymmetric(TreeNode root) {
//            //方法调用
//            return isSymmetric(root,root);
//        }
//
//        public boolean isSymmetric(TreeNode root1,TreeNode root2){
//            if(root1 == null && root2 == null){
//                return true;
//            }
//
//            //某结点只有一个子结点，故不对称，所以返回false
//            if(root1 == null || root2 == null){
//                return false;
//            }
//
//            //对称结点存在，但是值不相同
//            if(root1.val != root2.val){
//                return false;
//            }
//
//            //递归调用左子节点和右子节点
//            return isSymmetric(root1.left, root2.right) && isSymmetric(root1.right,root2.left);
//        }
//    }

}
